using System;
using System.IO;

namespace SistemaLib.sipe.util.io
{

	public class EscribidorDeArchivos
	{
		string _camino;
		char _separador = ';'; // separador por defecto
		StreamWriter _archivo;
		int _linea_actual = 0;
		bool imprimir_serapador = false;
		bool _escapear_enter = false;

		public char Separador
		{
			get
			{ return _separador;}
			set
			{ _separador = value;}
		}

		public int LineaActual
		{
			get
			{ return _linea_actual;}
			set
			{ _linea_actual = value;}
		}

		public EscribidorDeArchivos()
		{
			
		}

		public EscribidorDeArchivos( string camino)
		{
			_camino = camino;
		}

        public EscribidorDeArchivos(StreamWriter stream)
        {
            _archivo = stream;
        }

		public void Abrir()
		{
	        _archivo = File.CreateText( _camino);
		}

		public void Cerrar()
		{
			_archivo.Close();
		}

		public bool EscapearEnter
		{
			set
			{ _escapear_enter = value; }
		}

		public void ImprimirColumna( string texto)
		{
			if ( _escapear_enter )
			{
				texto = texto.Replace( "\n", "");
				texto = texto.Replace( Convert.ToChar(10).ToString(), "");
				texto = texto.Replace( Convert.ToChar(13).ToString(), "");
			}

			if ( imprimir_serapador )
			{
				_archivo.Write( _separador + texto);
			}
			else
			{
				_archivo.Write( texto);
			}
			imprimir_serapador = true;
		}

		public void ImprimirColumna( int numero)
		{
			ImprimirColumna( numero.ToString());
		}

		public void ImprimirColumna( DateTime fecha)
		{
			ImprimirColumna( util.Func.FechaToCadena( fecha));
		}

		public void ImprimirColumna( decimal numero)
		{
			ImprimirColumna( util.Func.DecimalToCadena( numero));
		}

		public void ImprimirColumnas( string[] textos)
		{
			for( int i = 0; i < textos.Length; i++)
			{
				ImprimirColumna( textos[i]);
			}
		}

		public void ImprimirFinLinea()
		{
			_archivo.Write( System.Environment.NewLine);
			imprimir_serapador = false;
		}



	}
}
